/*********************************
*-- 33 KDH Knieja ---------------*
*-- im. Harcerzy Września 1939 --*
*-- autor: Marcin Rzepisko ------*
*-- data: 2013-11-20 ------------*
**********************************/

package net.kdh.knieja.dao.klasy;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
import net.kdh.knieja.dao.klasy.sqlgenerator.TokenSqlGenerator;
import net.kdh.knieja.model.system.token.Token;
import net.kdh.knieja.model.system.token.TokenAdmina;
import net.kdh.knieja.model.system.token.TokenModa;
import net.kdh.knieja.model.system.token.TokenSuperUsera;
import net.kdh.knieja.model.wspolne.enumeracje.TypKontaEnum;
import net.kdh.knieja.model.wspolne.wyjatki.BladWarstwyDaoWyjatek;

/**
 *
 * @author rz.marcin@gmail.com
 */
public class TokenDAO extends KlasaDAO<Token>{

    public TokenDAO() {
        super(new TokenSqlGenerator());
    }
    @Override
    protected List<Token> parseResultSet(ResultSet rs) throws BladWarstwyDaoWyjatek {
        List<Token> lista = new ArrayList<>(0);
        String idUzytkownika="", login="", token="";
        Timestamp sesjaOd=null, sesjaDo=null;
        TypKontaEnum typ = null;
        try {
            for(int i = 0; rs.next() ; i++) {
                typ = TypKontaEnum.valueOf(rs.getString("typ"));
                switch (typ) {
                    case ADM: {
                        lista.add(new TokenAdmina());
                        break;
                    }
                    case MOD: {
                        lista.add(new TokenModa());
                        break;
                    }
                    case PWR: {
                        lista.add(new TokenSuperUsera());
                        break;
                    }
                    default: {
                        lista.add(new Token());
                        break;
                    }
                }
                idUzytkownika = rs.getString("id_uzytkownika");
                login = rs.getString("login");
                token = rs.getString("token");
                sesjaOd = rs.getTimestamp("sesja_od");
                sesjaDo = rs.getTimestamp("sesja_do");
                
                
                lista.get(i).setIdUzytkownika(idUzytkownika);
                lista.get(i).setLogin(login);
                lista.get(i).setToken(token);
                lista.get(i).setDataUtworzenia(sesjaOd);
                lista.get(i).setDataWygasniecia(sesjaDo);
            }
            rs.close();
        } catch (SQLException ex) {
            throw new BladWarstwyDaoWyjatek("TokenDAO.parseResultSet()", ex);
        }
        return lista;
    }
    
}
